package tenth.通配符.受限泛型;

/**
 * 在引用传的泛型操作中也可以设置一个泛型对象的范围上限和范围下限。
 * 范围上限使用extend关键字声明，表明泛型的类型可能是指定的类型或者是此类型的子类
 * 范围下限使用super关键字声明，表明泛型的类型可能是所指定的类型或者是此类型的父类，或者是Object类
 * 具体格式：
 * 设置上限：
 * 声明对象： 类名称<? extends 类> 对象名称
 * 定义类：   [访问权限] 类名称<泛型标识 extends 类> {}
 * 设置下限：
 * 声明对象： 类名称<? super 类> 对象名称
 * 定义类：   [访问权限] 类名称<泛型标识 extends 类>{}
 */
public class 受限泛型 {
    //下面这一块就当作是告诉自己通配符 ？ 是怎么来的 因为自己走神写错了 但是不想删了


    public static void main(String[] args) {
        Info<String> info = new Info<String>();
        info.setVar("冲刺！");
        fun(info);  //尽管String是Objecct的子类 但是在进行引用传递的时候也同样无法操作，这时候可将Info<Object> 改成Info
    }

    // public static void fun(Info<Object> temp) {
    // public static void fun(Info temp) { //程序可以正常使用 但是Info中并没有指定任何的泛型类型，所以引入 ？
    public static void fun(Info<?> temp) { //使用Info<?> 表示可以使用任意的泛型类型
        System.out.println("内容：" + temp);
    }
}
/*

 */